package com.gitee.l0km.codegen.annotations;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 代理方法注解<br>
 * 注解定义的各个字段用于指定代理的方法(Method)
 * @author guyadong
 * @since 2.3.2
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD )
public @interface DelegateMethod {
	/**
	 * 代理方法所属类型
	 */
	Class<?> delegateType() default Object.class;
	/**
	 * 与 {@link #delegateType()}等价
	 */
	String delegateTypeName() default "";
	/**
	 * 代理方法名
	 */
	String name() default "";
	/**
	 * 代理方法的参数类型数组
	 */
	Class<?>[] parameterTypes()default {};
	/**
	 * 方法的参数名数组
	 */
	String[] parameterNames() default{};
}
